/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package DA;

import BE.BETipoMovimiento;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;

/**
 *
 * @author Cristian
 */
public class DATipoMovimiento {

     public void modificaTipoMovimiento (BETipoMovimiento tipomov)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        String query = "UPDATE TipoMovimiento SET NOMBRE = '" + tipomov.getNombre() +
                "', DESCRIPCION = '" + tipomov.getDescripcion() + "' WHERE " +
                "IDTipoMovimiento = " + tipomov.getIdmovimiento();

        try
        {
            con = bd.conectar();
            s = con.createStatement();
            s.executeUpdate(query);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problemas al momento de acutializar datos","Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
        }
        bd.cierraConexion(con);
    }

    public BETipoMovimiento getTipoMovbyId (int idIProd)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        ResultSet rs = null;

        BETipoMovimiento TipoMovimiento = null;
        String query = "SELECT * FROM TipoMovimiento WHERE IDTipoMovimiento = " + idIProd;

        try
        {
            con = bd.conectar();
            s = con.createStatement();
            rs = s.executeQuery(query);

            rs.next();
            TipoMovimiento = new BETipoMovimiento();
            TipoMovimiento.setIdmovimiento(rs.getInt("IDTipoMovimiento"));

            TipoMovimiento.setNombre(rs.getString("NOMBRE"));

            TipoMovimiento.setEstado(rs.getString("Estado"));
            TipoMovimiento.setDescripcion(rs.getString("DESCRIPCION"));
        }
        catch (Exception e)
        {
          JOptionPane.showMessageDialog(null,"Error al obtener TipoMovimientos",
                                          "Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
        }

        bd.cierraConexion(con);
        return TipoMovimiento;
    }

    public void eliminarTipoMov (int idProd)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        String query = "UPDATE TipoMovimiento SET ESTADO = '0' WHERE IDTipoMovimiento = " + idProd;
        try
        {
            con = bd.conectar();
            s = con.createStatement();
            s.executeUpdate(query);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problemas al momento de borrar datos","Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
        }
        bd.cierraConexion(con);
    }








     public void agregarMovimiento (BETipoMovimiento objtipoMovimiento)
   {

        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        ResultSet rs = null;


        try
        {
            con = bd.conectar();
            JOptionPane.showMessageDialog(null,"Hola mundo","Error",JOptionPane.ERROR_MESSAGE);
            String query = "INSERT INTO tipoMovimiento (Nombre,Descripcion,Estado)VALUES (?,?,?)";
            PreparedStatement p=con.prepareStatement(query);
            p.setString(1, objtipoMovimiento.getNombre());
            p.setString(2, objtipoMovimiento.getDescripcion());
            p.setString(3, objtipoMovimiento.getEstado());

            //JOptionPane.showMessageDialog(null,p.toString(),"Error",JOptionPane.ERROR_MESSAGE);
            p.execute();

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos"+e.toString(),"Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
        }
        bd.cierraConexion(con);

    }
  public ResultSet buscarTipoMov(BETipoMovimiento tipomovimiento,
                                int tipoBusqueda)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        ResultSet rs = null;
        Statement s = null;
        String query = "SELECT * FROM tipomovimiento p WHERE p.NOMBRE LIKE '%" +
                        tipomovimiento.getNombre() + "%' AND p.idtipomovimiento like '%" + tipomovimiento.getIdmovimiento() +
                        "%'";

       // if (idEstado != 2)
         //   query += " AND p.ESTADO = " + idEstado;

        if (tipoBusqueda == 0 ) //busqueda de todos los datos
            query = "SELECT * FROM tipomovimiento";

        try
        {
            con = bd.conectar();
            s = con.createStatement();
            rs = s.executeQuery(query);

        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos","Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
        }
        bd.cierraConexion(con);
        return rs;
    }


   public List<BETipoMovimiento> buscarTipoMov2(BETipoMovimiento tipomovimiento,int tipomov)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        ResultSet rs = null;
        Statement s = null;
        //String //query = "SELECT * FROM tipomovimiento p WHERE p.NOMBRE LIKE '%" +
                //        tipomovimiento.getNombre() + "%' AND p.idtipomovimiento like '%" + tipomovimiento.getIdmovimiento() +
                  //      "%'";
String query;
     if (tipomov==0)
             query = "SELECT * FROM tipomovimiento" ;
     else query = "SELECT * FROM tipomovimiento WHERE NOMBRE LIKE '%" +
                       tipomovimiento.getNombre()  +
                       "%' AND estado like '%" + tipomovimiento.getEstado()+ "%'";

if (tipomov==1 && tipomovimiento.getIdmovimiento()>0 )
    query+= "%' AND idtipomovimiento like '%" + tipomovimiento.getIdmovimiento();

 List <BETipoMovimiento> lstipomov;
        try
        {
            con = bd.conectar();
            s = con.createStatement();
            rs = s.executeQuery(query);
            lstipomov = new ArrayList<BETipoMovimiento>();
            
            while (rs.next()){
                lstipomov.add(new BETipoMovimiento(rs.getInt(1),rs.getString(2),rs.getString(3),rs.getString(4)));
            }



        } catch (Exception e) {
            JOptionPane.showMessageDialog(null,"Problema al consultar la base de datos","Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return null;
        }
        bd.cierraConexion(con);
        return lstipomov;
    }

 public int existeMovimiento (int idtipomov)
    {
        DAConexion bd = new DAConexion();
        Connection con = null;
        Statement s = null;
        ResultSet rs = null;

        BETipoMovimiento TipoMovimiento = null;
        String query = "SELECT * FROM Movimiento WHERE TipoMovimiento = " + idtipomov;
           int n=0;
        try
        {
            con = bd.conectar();
            s = con.createStatement();
            rs = s.executeQuery(query);

          while(  rs.next()) n++;

      


        }
        catch (Exception e)
        {
          JOptionPane.showMessageDialog(null,"Error al obtener TipoMovimientos",
                                          "Error",JOptionPane.ERROR_MESSAGE);
            bd.cierraConexion(con);
            return 0;
        }

        bd.cierraConexion(con);
        return n;
    }

    }



